package com.jasperframework.boot.common.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;

import java.util.Objects;

/**
 * <p>json获取指定 key 特殊处理</p>
 *
 * @author: daizhao 9:12 2024/5/11 0011
 */
public class JSONDataUtil {

    /**
     * 获取jsonObject指定key的子JSONObject,如果key不存或jsonObject不存在，则返回null
     * @param jsonObject
     * @param key
     * @return
     */
    public static JSONObject getJSONObjectByKey(JSONObject jsonObject, String key){
        if (jsonObject == null || StringUtils.isEmpty(key)){
            return null;
        }
        return jsonObject.containsKey(key) ? jsonObject.getJSONObject(key): null;
    }

    /**
     * 获取jsonObject指定key的子JSONArray,如果key不存或jsonObject不存在，则返回null
     * @param jsonObject
     * @param key
     * @return
     */
    public static JSONArray getJSONArrayByKey(JSONObject jsonObject, String key){
        if (jsonObject == null || StringUtils.isEmpty(key)){
            return new JSONArray();
        }
        return jsonObject.containsKey(key) ? jsonObject.getJSONArray(key): new JSONArray();
    }

    /**
     * 获取jsonObject指定key的字符串值,如果key不存，则返回defaultValue
     * @param jsonObject
     * @param key
     * @param defaultValue
     * @return
     */
    public static String getStringOrDefault(JSONObject jsonObject, String key, String defaultValue) {
        if(StringUtils.isBlank(defaultValue)){
            defaultValue = "";
        }
        return jsonObject.containsKey(key) ? jsonObject.getString(key) : defaultValue;
    }

    /**
     *  获取jsonObject指定key的Integer值, 如果key不存，则返回defaultValue
     * @param jsonObject
     * @param key
     * @param defaultValue
     * @return
     */
    public static Integer getIntegerOrDefault(JSONObject jsonObject, String key, Integer defaultValue) {
        if(Objects.isNull(defaultValue)){
            defaultValue = 0;
        }
        return jsonObject.containsKey(key) ? jsonObject.getInteger(key) : defaultValue;
    }
}
